package com.jhy.szl.daima20240815;

import java.util.HashMap;
import java.util.Map;

/***
 * 给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。
 *
 * 注意：若 s 和 t 中每个字符出现的次数都相同，则称 s 和 t 互为字母异位词。
 */
public class IsAnagram {

    public boolean isAnagram(String s, String t) {
        char[] chars = s.toCharArray();
        char[] chars1 = t.toCharArray();
        if (chars1.length != chars.length) {
            return false;
        }

        Map<Character, Integer> hashMap = new HashMap();
        Map<Character, Integer> hashMap1 = new HashMap();


        for (int i = 0; i < chars.length; i++) {

            if (hashMap.containsKey(chars[i])) {
                hashMap.put(chars[i], hashMap.get(chars[i]) + 1);
            }else {
                hashMap.put(chars[i], 1);
            }

            if(hashMap1.containsKey(chars1[i])){
                hashMap1.put(chars1[i], hashMap1.get(chars1[i]) + 1);
            }else {
                hashMap1.put(chars1[i], 1);
            }
        }

        for (Map.Entry<Character, Integer> characterIntegerEntry : hashMap1.entrySet()) {
            Character key = characterIntegerEntry.getKey();
            if(hashMap1.get(key) != hashMap.get(key)){
                return false;
            }
        }
        return true;
    }


    public boolean isAnagram2(String s, String t) {
        if (s.length() != t.length()) {
            return false;
        }

        Map<Character, Integer> charCountMap = new HashMap<>();

        for (int i = 0; i < s.length(); i++) {
            charCountMap.put(s.charAt(i), charCountMap.getOrDefault(s.charAt(i), 0) + 1);
            charCountMap.put(t.charAt(i), charCountMap.getOrDefault(t.charAt(i), 0) - 1);
        }

        for (int count : charCountMap.values()) {
            if (count != 0) {
                return false;
            }
        }

        return true;
    }



}
